#include "Int_key.h"

Key_Type Int_key_Scan(void)
{

    if (READ_KEY_UP == GPIO_PIN_RESET) {
        vTaskDelay(10);
        if (READ_KEY_UP == GPIO_PIN_RESET) {
            while (READ_KEY_UP == GPIO_PIN_RESET);
            return KEY_UP;
        }
    }
    if (READ_KEY_DOWN == GPIO_PIN_RESET) {
        vTaskDelay(10);
        if (READ_KEY_DOWN == GPIO_PIN_RESET) {
            while (READ_KEY_DOWN == GPIO_PIN_RESET);
            return KEY_DOWN;
        }
    }
    if (READ_KEY_LEFT == GPIO_PIN_RESET) {
        vTaskDelay(10);
        if (READ_KEY_LEFT == GPIO_PIN_RESET) {
            while (READ_KEY_LEFT == GPIO_PIN_RESET);
            return KEY_LEFT;
        }
    }
    if (READ_KEY_RIGHT == GPIO_PIN_RESET) {
         vTaskDelay(10);
        if (READ_KEY_RIGHT == GPIO_PIN_RESET) {
            while (READ_KEY_RIGHT == GPIO_PIN_RESET);
            return KEY_RIGHT;
        }
    }
    if(READ_KEY_LEFT_X == GPIO_PIN_RESET)
    {
        TickType_t tick = xTaskGetTickCount();
         vTaskDelay(10);
        if(READ_KEY_LEFT_X == GPIO_PIN_RESET)
        {
            while(READ_KEY_LEFT_X == GPIO_PIN_RESET);
            if(xTaskGetTickCount() - tick > 500)
            {
                return KEY_LEFT_X_LONG;
            }else{
                return KEY_LEFT_X;
            }
            
        }
    }
    if(READ_KEY_RIGHT_X == GPIO_PIN_RESET)
    {
        TickType_t tick = xTaskGetTickCount();
         vTaskDelay(10);
        if(READ_KEY_RIGHT_X == GPIO_PIN_RESET)
        {
            while(READ_KEY_RIGHT_X == GPIO_PIN_RESET);
            if(xTaskGetTickCount() - tick > 500)
            {
                return KEY_RIGHT_X_LONG;
            }else{
                 return KEY_RIGHT_X;
            }
           
        }
    }

    return KEY_NONE;

}
